/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package ged.impl;

import ged.BorderInnerMargin;
import ged.BorderMargin;
import ged.Color;
import ged.ConnectionShapes;
import ged.Diagram;
import ged.Font;
import ged.GedFactory;
import ged.GedPackage;
import ged.Gradient;
import ged.LabelPlacement;
import ged.LabelPosition;
import ged.Label_attributes;
import ged.LineEndDecoration;
import ged.Layout;
import ged.LineSourceDecoration;
import ged.LineTargetDecoration;
import ged.LineDecoration;
import ged.LineType;
import ged.LineWidth;
import ged.Link;
import ged.MultiDiagram;
import ged.Multidiagrams;
import ged.Node;

import ged.NodeImage;
import ged.NodesShape;
import ged.fontName;
import ged.xxx;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EEnum;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;

import org.eclipse.emf.ecore.impl.EPackageImpl;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model <b>Package</b>.
 * <!-- end-user-doc -->
 * @generated
 */
public class GedPackageImpl extends EPackageImpl implements GedPackage
{
  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass diagramEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass nodeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass linkEClass = null;

  /**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass colorEClass = null;

		/**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass borderMarginEClass = null;

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass borderInnerMarginEClass = null;

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass lineWidthEClass = null;

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass fontEClass = null;

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass label_attributesEClass = null;

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EEnum lineTypeEEnum = null;

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EEnum gradientEEnum = null;

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EEnum nodeImageEEnum = null;

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EEnum nodesShapeEEnum = null;

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EEnum lineEndDecorationEEnum = null;

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EEnum labelPlacementEEnum = null;

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EEnum connectionShapesEEnum = null;

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EEnum labelPositionEEnum = null;

    /**
   * Creates an instance of the model <b>Package</b>, registered with
   * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
   * package URI value.
   * <p>Note: the correct way to create the package is via the static
   * factory method {@link #init init()}, which also performs
   * initialization of the package, or returns the registered package,
   * if one already exists.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see org.eclipse.emf.ecore.EPackage.Registry
   * @see ged.GedPackage#eNS_URI
   * @see #init()
   * @generated
   */
  private GedPackageImpl()
  {
    super(eNS_URI, GedFactory.eINSTANCE);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private static boolean isInited = false;

  /**
   * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
   * 
   * <p>This method is used to initialize {@link GedPackage#eINSTANCE} when that field is accessed.
   * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #eNS_URI
   * @see #createPackageContents()
   * @see #initializePackageContents()
   * @generated
   */
  public static GedPackage init()
  {
    if (isInited) return (GedPackage)EPackage.Registry.INSTANCE.getEPackage(GedPackage.eNS_URI);

    // Obtain or create and register package
    GedPackageImpl theGedPackage = (GedPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof GedPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new GedPackageImpl());

    isInited = true;

    // Create package meta-data objects
    theGedPackage.createPackageContents();

    // Initialize created meta-data
    theGedPackage.initializePackageContents();

    // Mark meta-data to indicate it can't be changed
    theGedPackage.freeze();

  
    // Update the registry and return the package
    EPackage.Registry.INSTANCE.put(GedPackage.eNS_URI, theGedPackage);
    return theGedPackage;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getDiagram()
  {
    return diagramEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getDiagram_Layout()
  {
    return (EAttribute)diagramEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getDiagram_Nodes()
  {
    return (EReference)diagramEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getDiagram_Links()
  {
    return (EReference)diagramEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getDiagram_Colors()
  {
    return (EReference)diagramEClass.getEStructuralFeatures().get(3);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getDiagram_Margin()
  {
    return (EReference)diagramEClass.getEStructuralFeatures().get(4);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getDiagram_In_margin()
  {
    return (EReference)diagramEClass.getEStructuralFeatures().get(5);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getDiagram_Width()
  {
    return (EReference)diagramEClass.getEStructuralFeatures().get(6);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getDiagram_Fonts()
  {
    return (EReference)diagramEClass.getEStructuralFeatures().get(7);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getDiagram_L_attr()
  {
    return (EReference)diagramEClass.getEStructuralFeatures().get(8);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getNode()
  {
    return nodeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getNode_Label()
  {
    return (EAttribute)nodeEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getNode_ToolTip()
  {
    return (EAttribute)nodeEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getNode_BackgroundColor()
  {
    return (EReference)nodeEClass.getEStructuralFeatures().get(8);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getNode_ForegroundColor()
  {
    return (EReference)nodeEClass.getEStructuralFeatures().get(9);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getNode_FontColor()
  {
    return (EReference)nodeEClass.getEStructuralFeatures().get(10);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getNode_BorderMargin()
  {
    return (EReference)nodeEClass.getEStructuralFeatures().get(11);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getNode_InnerMargin()
  {
    return (EReference)nodeEClass.getEStructuralFeatures().get(12);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getNode_Linewidth()
  {
    return (EReference)nodeEClass.getEStructuralFeatures().get(13);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getNode_Font()
  {
    return (EReference)nodeEClass.getEStructuralFeatures().get(14);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getNode_Label_attributes()
  {
    return (EReference)nodeEClass.getEStructuralFeatures().get(15);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getNode_Border_lineType()
  {
    return (EAttribute)nodeEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getNode_Gradient()
  {
    return (EAttribute)nodeEClass.getEStructuralFeatures().get(3);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getNode_Shape()
  {
    return (EAttribute)nodeEClass.getEStructuralFeatures().get(4);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getNode_Images()
  {
    return (EAttribute)nodeEClass.getEStructuralFeatures().get(5);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getNode_CustomShape()
  {
    return (EAttribute)nodeEClass.getEStructuralFeatures().get(6);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getNode_CustomImage()
  {
    return (EAttribute)nodeEClass.getEStructuralFeatures().get(7);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getLink()
  {
    return linkEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getLink_Label()
  {
    return (EAttribute)linkEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getLink_LineShape()
  {
    return (EAttribute)linkEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getLink_SourceDecoration()
  {
    return (EAttribute)linkEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getLink_TargetDecoration()
  {
    return (EAttribute)linkEClass.getEStructuralFeatures().get(3);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getLink_SourceLabel()
  {
    return (EAttribute)linkEClass.getEStructuralFeatures().get(4);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getLink_TargetLabel()
  {
    return (EAttribute)linkEClass.getEStructuralFeatures().get(5);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getLink_Connection_lineType()
  {
    return (EAttribute)linkEClass.getEStructuralFeatures().get(6);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getLink_Line_target_decoration()
  {
    return (EAttribute)linkEClass.getEStructuralFeatures().get(7);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getLink_Line_source_decoration()
  {
    return (EAttribute)linkEClass.getEStructuralFeatures().get(8);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getLink_Shape_of_connection()
  {
    return (EAttribute)linkEClass.getEStructuralFeatures().get(9);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getLink_Conn_linewidth()
  {
    return (EReference)linkEClass.getEStructuralFeatures().get(10);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getLink_Font_color()
  {
    return (EReference)linkEClass.getEStructuralFeatures().get(11);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getLink_Font()
  {
    return (EReference)linkEClass.getEStructuralFeatures().get(12);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getLink_Source()
  {
    return (EReference)linkEClass.getEStructuralFeatures().get(13);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getLink_Target()
  {
    return (EReference)linkEClass.getEStructuralFeatures().get(14);
  }

  /**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getColor() {
    return colorEClass;
  }

		/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EAttribute getColor_Red() {
    return (EAttribute)colorEClass.getEStructuralFeatures().get(0);
  }

		/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EAttribute getColor_Green() {
    return (EAttribute)colorEClass.getEStructuralFeatures().get(1);
  }

		/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EAttribute getColor_Blue() {
    return (EAttribute)colorEClass.getEStructuralFeatures().get(2);
  }

		/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EEnum getGradient() {
    return gradientEEnum;
  }

		/**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EEnum getNodeImage()
  {
    return nodeImageEEnum;
  }

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EEnum getNodesShape()
  {
    return nodesShapeEEnum;
  }

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EEnum getLineEndDecoration()
  {
    return lineEndDecorationEEnum;
  }

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EEnum getLabelPlacement()
  {
    return labelPlacementEEnum;
  }

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EEnum getConnectionShapes()
  {
    return connectionShapesEEnum;
  }

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EEnum getLabelPosition()
  {
    return labelPositionEEnum;
  }

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getBorderMargin()
  {
    return borderMarginEClass;
  }

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getBorderMargin_Margin_top()
  {
    return (EAttribute)borderMarginEClass.getEStructuralFeatures().get(0);
  }

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getBorderMargin_Margin_bottom()
  {
    return (EAttribute)borderMarginEClass.getEStructuralFeatures().get(1);
  }

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getBorderMargin_Margin_left()
  {
    return (EAttribute)borderMarginEClass.getEStructuralFeatures().get(2);
  }

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getBorderMargin_Margin_right()
  {
    return (EAttribute)borderMarginEClass.getEStructuralFeatures().get(3);
  }

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getBorderInnerMargin()
  {
    return borderInnerMarginEClass;
  }

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getBorderInnerMargin_Inner_margin_top()
  {
    return (EAttribute)borderInnerMarginEClass.getEStructuralFeatures().get(0);
  }

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getBorderInnerMargin_Inner_margin_bottom()
  {
    return (EAttribute)borderInnerMarginEClass.getEStructuralFeatures().get(1);
  }

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getBorderInnerMargin_Inner_margin_left()
  {
    return (EAttribute)borderInnerMarginEClass.getEStructuralFeatures().get(2);
  }

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getBorderInnerMargin_Inner_margin_right()
  {
    return (EAttribute)borderInnerMarginEClass.getEStructuralFeatures().get(3);
  }

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getLineWidth()
  {
    return lineWidthEClass;
  }

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getLineWidth_Lwidth()
  {
    return (EAttribute)lineWidthEClass.getEStructuralFeatures().get(0);
  }

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getFont()
  {
    return fontEClass;
  }

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getFont_LabelBold()
  {
    return (EAttribute)fontEClass.getEStructuralFeatures().get(0);
  }

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getFont_LabelItalic()
  {
    return (EAttribute)fontEClass.getEStructuralFeatures().get(1);
  }

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getFont_LabelStrikeThrough()
  {
    return (EAttribute)fontEClass.getEStructuralFeatures().get(2);
  }

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getFont_LabelUnderline()
  {
    return (EAttribute)fontEClass.getEStructuralFeatures().get(3);
  }

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getFont_Fname()
  {
    return (EAttribute)fontEClass.getEStructuralFeatures().get(4);
  }

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getFont_FontHeight()
  {
    return (EAttribute)fontEClass.getEStructuralFeatures().get(5);
  }

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getLabel_attributes()
  {
    return label_attributesEClass;
  }

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getLabel_attributes_Label_placement()
  {
    return (EAttribute)label_attributesEClass.getEStructuralFeatures().get(0);
  }

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getLabel_attributes_Label_position()
  {
    return (EAttribute)label_attributesEClass.getEStructuralFeatures().get(1);
  }

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getLabel_attributes_ReadOnly()
  {
    return (EAttribute)label_attributesEClass.getEStructuralFeatures().get(2);
  }

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EEnum getLineType()
  {
    return lineTypeEEnum;
  }

    /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public GedFactory getGedFactory()
  {
    return (GedFactory)getEFactoryInstance();
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private boolean isCreated = false;

  /**
   * Creates the meta-model objects for the package.  This method is
   * guarded to have no affect on any invocation but its first.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void createPackageContents()
  {
    if (isCreated) return;
    isCreated = true;

    // Create classes and their features
    diagramEClass = createEClass(DIAGRAM);
    createEAttribute(diagramEClass, DIAGRAM__LAYOUT);
    createEReference(diagramEClass, DIAGRAM__NODES);
    createEReference(diagramEClass, DIAGRAM__LINKS);
    createEReference(diagramEClass, DIAGRAM__COLORS);
    createEReference(diagramEClass, DIAGRAM__MARGIN);
    createEReference(diagramEClass, DIAGRAM__IN_MARGIN);
    createEReference(diagramEClass, DIAGRAM__WIDTH);
    createEReference(diagramEClass, DIAGRAM__FONTS);
    createEReference(diagramEClass, DIAGRAM__LATTR);

    nodeEClass = createEClass(NODE);
    createEAttribute(nodeEClass, NODE__LABEL);
    createEAttribute(nodeEClass, NODE__TOOL_TIP);
    createEAttribute(nodeEClass, NODE__BORDER_LINE_TYPE);
    createEAttribute(nodeEClass, NODE__GRADIENT);
    createEAttribute(nodeEClass, NODE__SHAPE);
    createEAttribute(nodeEClass, NODE__IMAGES);
    createEAttribute(nodeEClass, NODE__CUSTOM_SHAPE);
    createEAttribute(nodeEClass, NODE__CUSTOM_IMAGE);
    createEReference(nodeEClass, NODE__BACKGROUND_COLOR);
    createEReference(nodeEClass, NODE__FOREGROUND_COLOR);
    createEReference(nodeEClass, NODE__FONT_COLOR);
    createEReference(nodeEClass, NODE__BORDER_MARGIN);
    createEReference(nodeEClass, NODE__INNER_MARGIN);
    createEReference(nodeEClass, NODE__LINEWIDTH);
    createEReference(nodeEClass, NODE__FONT);
    createEReference(nodeEClass, NODE__LABEL_ATTRIBUTES);

    linkEClass = createEClass(LINK);
    createEAttribute(linkEClass, LINK__LABEL);
    createEAttribute(linkEClass, LINK__LINE_SHAPE);
    createEAttribute(linkEClass, LINK__SOURCE_DECORATION);
    createEAttribute(linkEClass, LINK__TARGET_DECORATION);
    createEAttribute(linkEClass, LINK__SOURCE_LABEL);
    createEAttribute(linkEClass, LINK__TARGET_LABEL);
    createEAttribute(linkEClass, LINK__CONNECTION_LINE_TYPE);
    createEAttribute(linkEClass, LINK__LINE_TARGET_DECORATION);
    createEAttribute(linkEClass, LINK__LINE_SOURCE_DECORATION);
    createEAttribute(linkEClass, LINK__SHAPE_OF_CONNECTION);
    createEReference(linkEClass, LINK__CONN_LINEWIDTH);
    createEReference(linkEClass, LINK__FONT_COLOR);
    createEReference(linkEClass, LINK__FONT);
    createEReference(linkEClass, LINK__SOURCE);
    createEReference(linkEClass, LINK__TARGET);

    colorEClass = createEClass(COLOR);
    createEAttribute(colorEClass, COLOR__RED);
    createEAttribute(colorEClass, COLOR__GREEN);
    createEAttribute(colorEClass, COLOR__BLUE);

    borderMarginEClass = createEClass(BORDER_MARGIN);
    createEAttribute(borderMarginEClass, BORDER_MARGIN__MARGIN_TOP);
    createEAttribute(borderMarginEClass, BORDER_MARGIN__MARGIN_BOTTOM);
    createEAttribute(borderMarginEClass, BORDER_MARGIN__MARGIN_LEFT);
    createEAttribute(borderMarginEClass, BORDER_MARGIN__MARGIN_RIGHT);

    borderInnerMarginEClass = createEClass(BORDER_INNER_MARGIN);
    createEAttribute(borderInnerMarginEClass, BORDER_INNER_MARGIN__INNER_MARGIN_TOP);
    createEAttribute(borderInnerMarginEClass, BORDER_INNER_MARGIN__INNER_MARGIN_BOTTOM);
    createEAttribute(borderInnerMarginEClass, BORDER_INNER_MARGIN__INNER_MARGIN_LEFT);
    createEAttribute(borderInnerMarginEClass, BORDER_INNER_MARGIN__INNER_MARGIN_RIGHT);

    lineWidthEClass = createEClass(LINE_WIDTH);
    createEAttribute(lineWidthEClass, LINE_WIDTH__LWIDTH);

    fontEClass = createEClass(FONT);
    createEAttribute(fontEClass, FONT__LABEL_BOLD);
    createEAttribute(fontEClass, FONT__LABEL_ITALIC);
    createEAttribute(fontEClass, FONT__LABEL_STRIKE_THROUGH);
    createEAttribute(fontEClass, FONT__LABEL_UNDERLINE);
    createEAttribute(fontEClass, FONT__FNAME);
    createEAttribute(fontEClass, FONT__FONT_HEIGHT);

    label_attributesEClass = createEClass(LABEL_ATTRIBUTES);
    createEAttribute(label_attributesEClass, LABEL_ATTRIBUTES__LABEL_PLACEMENT);
    createEAttribute(label_attributesEClass, LABEL_ATTRIBUTES__LABEL_POSITION);
    createEAttribute(label_attributesEClass, LABEL_ATTRIBUTES__READ_ONLY);

    // Create enums
    lineTypeEEnum = createEEnum(LINE_TYPE);
    gradientEEnum = createEEnum(GRADIENT);
    nodeImageEEnum = createEEnum(NODE_IMAGE);
    nodesShapeEEnum = createEEnum(NODES_SHAPE);
    lineEndDecorationEEnum = createEEnum(LINE_END_DECORATION);
    labelPlacementEEnum = createEEnum(LABEL_PLACEMENT);
    labelPositionEEnum = createEEnum(LABEL_POSITION);
    connectionShapesEEnum = createEEnum(CONNECTION_SHAPES);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private boolean isInitialized = false;

  /**
   * Complete the initialization of the package and its meta-model.  This
   * method is guarded to have no affect on any invocation but its first.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void initializePackageContents()
  {
    if (isInitialized) return;
    isInitialized = true;

    // Initialize package
    setName(eNAME);
    setNsPrefix(eNS_PREFIX);
    setNsURI(eNS_URI);

    // Create type parameters

    // Set bounds for type parameters

    // Add supertypes to classes
    diagramEClass.getESuperTypes().add(this.getNode());

    // Initialize classes and features; add operations and parameters
    initEClass(diagramEClass, Diagram.class, "Diagram", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getDiagram_Layout(), ecorePackage.getEString(), "layout", null, 0, 1, Diagram.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getDiagram_Nodes(), this.getNode(), null, "nodes", null, 0, -1, Diagram.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getDiagram_Links(), this.getLink(), null, "links", null, 0, -1, Diagram.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getDiagram_Colors(), this.getColor(), null, "colors", null, 0, -1, Diagram.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getDiagram_Margin(), this.getBorderMargin(), null, "margin", null, 0, -1, Diagram.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getDiagram_In_margin(), this.getBorderInnerMargin(), null, "in_margin", null, 0, -1, Diagram.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getDiagram_Width(), this.getLineWidth(), null, "width", null, 0, -1, Diagram.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getDiagram_Fonts(), this.getFont(), null, "fonts", null, 0, -1, Diagram.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getDiagram_L_attr(), this.getLabel_attributes(), null, "l_attr", null, 0, -1, Diagram.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(nodeEClass, Node.class, "Node", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getNode_Label(), ecorePackage.getEString(), "label", null, 0, 1, Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getNode_ToolTip(), ecorePackage.getEString(), "toolTip", null, 0, 1, Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getNode_Border_lineType(), this.getLineType(), "border_lineType", null, 0, 1, Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getNode_Gradient(), this.getGradient(), "gradient", null, 0, 1, Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getNode_Shape(), this.getNodesShape(), "shape", null, 0, 1, Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getNode_Images(), this.getNodeImage(), "images", null, 0, 1, Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getNode_CustomShape(), ecorePackage.getEString(), "customShape", null, 0, 1, Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getNode_CustomImage(), ecorePackage.getEString(), "customImage", null, 0, 1, Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getNode_BackgroundColor(), this.getColor(), null, "backgroundColor", null, 0, 1, Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getNode_ForegroundColor(), this.getColor(), null, "foregroundColor", null, 0, 1, Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getNode_FontColor(), this.getColor(), null, "fontColor", null, 0, 1, Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getNode_BorderMargin(), this.getBorderMargin(), null, "borderMargin", null, 0, 1, Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getNode_InnerMargin(), this.getBorderInnerMargin(), null, "innerMargin", null, 0, 1, Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getNode_Linewidth(), this.getLineWidth(), null, "linewidth", null, 0, 1, Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getNode_Font(), this.getFont(), null, "font", null, 0, 1, Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getNode_Label_attributes(), this.getLabel_attributes(), null, "label_attributes", null, 0, 1, Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(linkEClass, Link.class, "Link", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getLink_Label(), ecorePackage.getEString(), "label", null, 0, 1, Link.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getLink_LineShape(), ecorePackage.getEString(), "lineShape", null, 0, 1, Link.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getLink_SourceDecoration(), ecorePackage.getEString(), "sourceDecoration", null, 0, 1, Link.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getLink_TargetDecoration(), ecorePackage.getEString(), "targetDecoration", null, 0, 1, Link.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getLink_SourceLabel(), ecorePackage.getEString(), "sourceLabel", null, 0, 1, Link.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getLink_TargetLabel(), ecorePackage.getEString(), "targetLabel", null, 0, 1, Link.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getLink_Connection_lineType(), this.getLineType(), "connection_lineType", null, 0, 1, Link.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getLink_Line_target_decoration(), this.getLineEndDecoration(), "line_target_decoration", null, 0, 1, Link.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getLink_Line_source_decoration(), this.getLineEndDecoration(), "line_source_decoration", null, 0, 1, Link.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getLink_Shape_of_connection(), this.getConnectionShapes(), "shape_of_connection", null, 0, 1, Link.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getLink_Conn_linewidth(), this.getLineWidth(), null, "conn_linewidth", null, 0, 1, Link.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getLink_Font_color(), this.getColor(), null, "font_color", null, 0, 1, Link.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getLink_Font(), this.getFont(), null, "font", null, 0, 1, Link.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getLink_Source(), this.getNode(), null, "source", null, 0, 1, Link.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getLink_Target(), this.getNode(), null, "target", null, 0, 1, Link.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(colorEClass, Color.class, "Color", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getColor_Red(), ecorePackage.getEInt(), "red", null, 0, 1, Color.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getColor_Green(), ecorePackage.getEInt(), "green", null, 0, 1, Color.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getColor_Blue(), ecorePackage.getEInt(), "blue", null, 0, 1, Color.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(borderMarginEClass, BorderMargin.class, "BorderMargin", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getBorderMargin_Margin_top(), ecorePackage.getEInt(), "margin_top", null, 0, 1, BorderMargin.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getBorderMargin_Margin_bottom(), ecorePackage.getEInt(), "margin_bottom", null, 0, 1, BorderMargin.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getBorderMargin_Margin_left(), ecorePackage.getEInt(), "margin_left", null, 0, 1, BorderMargin.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getBorderMargin_Margin_right(), ecorePackage.getEInt(), "margin_right", null, 0, 1, BorderMargin.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(borderInnerMarginEClass, BorderInnerMargin.class, "BorderInnerMargin", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getBorderInnerMargin_Inner_margin_top(), ecorePackage.getEInt(), "inner_margin_top", null, 0, 1, BorderInnerMargin.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getBorderInnerMargin_Inner_margin_bottom(), ecorePackage.getEInt(), "inner_margin_bottom", null, 0, 1, BorderInnerMargin.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getBorderInnerMargin_Inner_margin_left(), ecorePackage.getEInt(), "inner_margin_left", null, 0, 1, BorderInnerMargin.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getBorderInnerMargin_Inner_margin_right(), ecorePackage.getEInt(), "inner_margin_right", null, 0, 1, BorderInnerMargin.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(lineWidthEClass, LineWidth.class, "LineWidth", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getLineWidth_Lwidth(), ecorePackage.getEInt(), "lwidth", null, 0, 1, LineWidth.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(fontEClass, Font.class, "Font", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getFont_LabelBold(), ecorePackage.getEBoolean(), "labelBold", null, 0, 1, Font.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getFont_LabelItalic(), ecorePackage.getEBoolean(), "labelItalic", null, 0, 1, Font.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getFont_LabelStrikeThrough(), ecorePackage.getEBoolean(), "labelStrikeThrough", null, 0, 1, Font.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getFont_LabelUnderline(), ecorePackage.getEBoolean(), "labelUnderline", null, 0, 1, Font.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getFont_Fname(), ecorePackage.getEString(), "fname", null, 0, 1, Font.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getFont_FontHeight(), ecorePackage.getEInt(), "fontHeight", null, 0, 1, Font.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(label_attributesEClass, Label_attributes.class, "Label_attributes", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getLabel_attributes_Label_placement(), this.getLabelPlacement(), "label_placement", null, 0, 1, Label_attributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getLabel_attributes_Label_position(), this.getLabelPosition(), "label_position", null, 0, 1, Label_attributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getLabel_attributes_ReadOnly(), ecorePackage.getEBoolean(), "readOnly", null, 0, 1, Label_attributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    // Initialize enums and add enum literals
    initEEnum(lineTypeEEnum, LineType.class, "LineType");
    addEEnumLiteral(lineTypeEEnum, LineType.SOLID);
    addEEnumLiteral(lineTypeEEnum, LineType.DASH);
    addEEnumLiteral(lineTypeEEnum, LineType.DASH_DOT);
    addEEnumLiteral(lineTypeEEnum, LineType.DASH_DOT_DOT);
    addEEnumLiteral(lineTypeEEnum, LineType.DOT);

    initEEnum(gradientEEnum, Gradient.class, "Gradient");
    addEEnumLiteral(gradientEEnum, Gradient.NO_GRADINET);
    addEEnumLiteral(gradientEEnum, Gradient.VERTICAL);
    addEEnumLiteral(gradientEEnum, Gradient.HORIZONTAL);

    initEEnum(nodeImageEEnum, NodeImage.class, "NodeImage");
    addEEnumLiteral(nodeImageEEnum, NodeImage.NO_IMAGE);
    addEEnumLiteral(nodeImageEEnum, NodeImage.ACTOR);
    addEEnumLiteral(nodeImageEEnum, NodeImage.DATABASE);

    initEEnum(nodesShapeEEnum, NodesShape.class, "NodesShape");
    addEEnumLiteral(nodesShapeEEnum, NodesShape.ROUNDED_RECTANGLE);
    addEEnumLiteral(nodesShapeEEnum, NodesShape.RECTANGLE);
    addEEnumLiteral(nodesShapeEEnum, NodesShape.ELLIPSE);
    addEEnumLiteral(nodesShapeEEnum, NodesShape.POLYGON);

    initEEnum(lineEndDecorationEEnum, LineEndDecoration.class, "LineEndDecoration");
    addEEnumLiteral(lineEndDecorationEEnum, LineEndDecoration.NONE);
    addEEnumLiteral(lineEndDecorationEEnum, LineEndDecoration.POLY_LINE);
    addEEnumLiteral(lineEndDecorationEEnum, LineEndDecoration.POLYGON);
    addEEnumLiteral(lineEndDecorationEEnum, LineEndDecoration.CIRCLE);

    initEEnum(labelPlacementEEnum, LabelPlacement.class, "LabelPlacement");
    addEEnumLiteral(labelPlacementEEnum, LabelPlacement.INTERNAL);
    addEEnumLiteral(labelPlacementEEnum, LabelPlacement.EXTERNAL);

    initEEnum(labelPositionEEnum, LabelPosition.class, "LabelPosition");
    addEEnumLiteral(labelPositionEEnum, LabelPosition.TOP_RIGHT);
    addEEnumLiteral(labelPositionEEnum, LabelPosition.BOTTOM);
    addEEnumLiteral(labelPositionEEnum, LabelPosition.TOP_LEFT);
    addEEnumLiteral(labelPositionEEnum, LabelPosition.TOP);
    addEEnumLiteral(labelPositionEEnum, LabelPosition.LEFT);
    addEEnumLiteral(labelPositionEEnum, LabelPosition.CENTER);
    addEEnumLiteral(labelPositionEEnum, LabelPosition.RIGHT);
    addEEnumLiteral(labelPositionEEnum, LabelPosition.BOTTOM_LEFT);
    addEEnumLiteral(labelPositionEEnum, LabelPosition.BOTTOM_RIGHT);

    initEEnum(connectionShapesEEnum, ConnectionShapes.class, "ConnectionShapes");
    addEEnumLiteral(connectionShapesEEnum, ConnectionShapes.POLYLINE_CONNECTION_EX);
    addEEnumLiteral(connectionShapesEEnum, ConnectionShapes.PIPE_CONNECTION);

    // Create resource
    createResource(eNS_URI);

    // Create annotations
    // gmf.diagram
    createGmfAnnotations();
    // gmf.node
    createGmf_1Annotations();
    // gmf.link
    createGmf_2Annotations();
  }

  /**
   * Initializes the annotations for <b>gmf.diagram</b>.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected void createGmfAnnotations()
  {
    String source = "gmf.diagram";		
    addAnnotation
      (diagramEClass, 
       source, 
       new String[] 
       {
       "foo", "bar"
       });		
  }

  /**
   * Initializes the annotations for <b>gmf.node</b>.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected void createGmf_1Annotations()
  {
    String source = "gmf.node";			
    addAnnotation
      (nodeEClass, 
       source, 
       new String[] 
       {
       "label", "label"
       });	
  }

  /**
   * Initializes the annotations for <b>gmf.link</b>.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected void createGmf_2Annotations()
  {
    String source = "gmf.link";				
    addAnnotation
      (linkEClass, 
       source, 
       new String[] 
       {
       "label", "label",
       "source", "source",
       "target", "target"
       });
  }

} //GedPackageImpl
